Microcontroller devices typically include an on-die non-volatile memory element which stores application software (i.e., instructions) for running the device. More rare, but also known are multi-chip packages or MCPs in which the non-volatile memory (or NVM) is embodied on a separate die from the actual processor hardware. The two separate dice are packaged in a single MCP. In this specification, the terms "chip" and "die" are used interchangeably to denote a piece of semiconductor material containing one or more circuits that has been cut from a wafer.
Typically, these MCPs or single chip processors (SCPs) have a parallel communication architecture both internally and externally of the device. Processors with a serial communication architecture, internal and/or external are more rare, but are known. Parallel architecture SCPs or MCPs can certainly be advantageous in many instances, but typically lead to greater expense and more difficult fabrication due to the need for increased numbers of electrical connections (e.g., wires, electrical traces, pads and pins).
It is common for the non-volatile memory element in these SCPs or MCPs to be of the ROM variety in which the application program is fabricated into the device during manufacturing and can never be altered. However, it is increasingly more common for the nonvolatile memory element to be either one time programmable, such as an EPROM, or programmable, erasable and reprogrammable, such as an EEPROM or FLASH memory.
Typically, to place an application program in a programmable NVM, the device must be placed in a programming apparatus which can be configured to cause the desired program to be stored in the NVM permanently (or at least until reprogrammed). Thus, in the case of a reprogrammable NVM such as an EEPROM or a FLASH memory, if the user wishes to change the application program at a time after the SCP or MCP has been in use, the user must remove the device from the application environment in which it is embodied to place it in a programming apparatus for reprogramming. This can be difficult and sometimes impossible.
Accordingly, it is an object of the present invention to provide an improved MCP processor.
It is another object of the present invention to provide a low-cost, easy to fabricate serial architecture MCP processor.
It is a further object of the present invention to provide an MCP digital processor having in-system programming capabilities.
It is yet a further object of the present invention to provide an MCP processor with a bus multiplexing architecture which can accommodate multiple programming modes and an emulation mode without a substantial increase in registers and connections on the dice.